package chop4;

/**
 *
 */
public class index {
    /**
     * 封装：
     * 	1. 概念：对内隐藏实现细节，对外提供公共的方法来使调用者调用。
     * 	2.好处：
     * 		（1）只能通过规定的方法访问数据。
     * 		（2）隐藏类内部实现细节。
     * 		（3）方便加入控制语句
     * 		（4）方便修改实现
     * 	3.使用封装的3个步骤：
     * 		（1）将属性的访问修饰符修改成private
     * 		（2）给每个属性创建getter和setter方法
     * 		（3）在getter和setter方法中加入控制语句。
     * 		（4）给属性封装的快捷键：alt+insert
     * 继承：将多个类的公共属性和方法提取到父类中，供多个子类使用
     * 	1.如果不使用继承，会出现以下一些问题：
     * 		（1）代码重复
     * 		（2）如果要修改的话，两个类都需要修改。
     * 	2.继承体现的是一种is a 的关系。
     * 	子类访问父类的成员：
     * 	1.访问属性：super.属性名
     * 	2.访问方法：super.方法名
     * 	3.访问构造方法：super.构造方法名
     * 	重载和重写的区别：
     * 	1.重载是在一个类中，方法名和返回值类型一样，参数列表不同。
     * 	2.重写，在两个类中，子类重写父类的方法，方法名一样，参数列表一样，返回值类型相同或者是其子类。
     * 	继承关系中的构造方法：
     * 	1.当子类的无参构造方法使用super调用父类里面无参的构造方法时，程序先执行父类的无参构造方法，再执行子类的无参构造方法。
     * 	2.当子类的无参构造方法不使用super调用父类的无参构造方法时，程序还是会先执行父类的无参构造方法，在执行子类的无参构造方法。
     * 	3.当子类的有参构造使用super调用父类的有参构造方法时，程序先执行父类有参的构造方法，再执行子类有参的构造方法。
     * 	4.当子类的有参构造方法不使用super调用父类的有参构造方法时，程序会先执行父类的无参构造方法，在执行子类的有参构造方法。
     * 	5.需要注意的是，如果要使用super,那么就得把super放在方法的第一行中。
     * 	抽象类：
     * 	1.语法：public abstract class 类名{}
     * 	2.为了限制不能实例化某个类（父类）的时候，我们需要使用抽象类，关键词是abstract
     * 	抽象方法：
     * 	1.语法：public abstract 返回类型 方法名();
     * 	2.抽象方法没有方法体。
     * 	3.抽象方法必须在抽象类中，抽象类中可以没有，可以有一个或者有好多个抽象方法。
     * 	4.子类必须重写父类的抽象方法。
     * 	final修饰符：
     * 	1.修饰属性的时候表示的是常量。
     * 	2.修饰类的时候，别的类无法继承它。
     * 	3.修饰方法的时候，子类不能重写父类的该方法。
     * 	多态：
     * 	1.概念：是具有多种形态的能力的特征，同一实现接口，使用不同的实例而执行不同的操作。
     * 	2.多态的好处：减少代码量，提高代码的可扩展性和可维护性。继承是实现多态的基础，没有继承就没有多态。
     * 	实现多态的三个条件：
     * 	1.继承的存在。
     * 	2.子类重写父类的方法
     * 	3.父类引用变量指向子类对象
     * 	子类到父类的转换（向上转换）：
     * 	Pet pet = new Dog(); 	//子类到父类的转换
     * 	Dog dog = new Dog();	//不涉及转换
     * 	pet.eat();		//调用的是子类的eat方法。
     * 	pet.play();		//编译无错，pet无法调用子类特有的方法。
     * 	规则：
     * 		1.将一个父类的引用指向一个子类的对象，称为向上转型，或者自动进行类型转换。
     * 		2.此时通过父类的引用变量调用的是子类重写父类的方法，而不是父类的方法。
     * 		3.此时通过父类的引用的变量无法调用子类特有的方法。
     * 	父类到子类的转换，向下转型。
     * 	1.概念：将一个指向子类对象的父类引用赋值给一个子类的引用，称为向下转型。
     * 	instanceof运算符：
     * 	1.含义：用来进行类型的判断。
     * 	2.结果是true或者false
     * 	3.使用instanceof可以避免类型转换异常。
     */
}
